package com.itheima.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.itheima.common.BaseContext;
import com.itheima.common.R;
import com.itheima.entity.AddressBook;
import com.itheima.service.AddressBookService;
import javafx.scene.canvas.GraphicsContext;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.jni.Address;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/adderssBook")
public class AdderBookController {
    /*
    * 新增
    *
    * */
    @Autowired
    private AddressBookService addressBookService;
    public R<AddressBook> save(@RequestBody AddressBook addressBook){
        addressBook.setUserId(BaseContext.getCurrentId());
        log.info("addressBook {}",addressBook);

        addressBookService.save(addressBook);
        return R.success(addressBook);

    }

   /*
   *设置默认地址

    *
    */
    @PutMapping("default")
    public R<AddressBook> setDefault(@RequestBody AddressBook addressBook){
        log.info("addressBook{}",addressBook);
        LambdaUpdateWrapper<AddressBook> wrapper = new LambdaUpdateWrapper<>();
     wrapper.eq(AddressBook::getUserId,BaseContext.getCurrentId());
     wrapper.set(AddressBook::getIsDefault,0);
     addressBookService.update(wrapper);
     addressBook.setIsDefault(1);
     addressBookService.updateById(addressBook);
     return R.success(addressBook);
     
    }


    /*
    *查询指定用户的全部地址
     */
    @GetMapping("/list")
    public R<List<AddressBook>> list(AddressBook addressBook){
        addressBook.setUserId(BaseContext.getCurrentId());
        log.info("addressBook {}",addressBook);

        //条件构造器
        LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();

  queryWrapper.eq(null!=addressBook.getUserId(),AddressBook::getUserId,addressBook.getUserId());
  queryWrapper.orderByDesc(AddressBook::getUpdateTime);
  return R.success(addressBookService.list(queryWrapper));
    }
}
